home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / igo / gosource / igo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  6.5 KB  |  275 lines

  1. #define DEBUG 0
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <snd.h>
  7. #include <winb.h>
  8. #include <te.h>
  9. #include <fntb.h>
  10. #include <gui.h>
  11. #include <egb.h>
  12. #include <file_dlg.h>
  13. #include <guidbg.h>
  14. #include "igo.h"
  15. #include "banx.h"
  16. #include "kifuctrl.h"
  17. #include "kiffile.h"
  18. #include "title.h"
  19.  
  20. char    *guiEgbPtr ;            /*    EGB のワークアドレス    */
  21. char    guiSndPtr[16*1024] ;    /*    SND のワークアドレス    */
  22.  
  23. int        exitFuncRet;
  24.  
  25. int userFunc(int apliId, int messId, int data)
  26. {
  27.     register int     ret;
  28.     extern     int        deskTopBtnId[];
  29.  
  30.     ret = ILLEGAL_FUNCTION;
  31.  
  32.     switch(messId){
  33.         case GM_QUIT:{
  34.             MMI_SendMessage(deskTopBtnId[1], MM_EXEC, 2, 0, 0) ;
  35.             ret = exitFuncRet;
  36.             break;
  37.         }
  38.     }
  39.     return ret;
  40.  
  41. }
  42.  
  43. void main()
  44. {
  45.     extern int APL_init() ;
  46.     
  47.  
  48.     MMICTRL    ctrl ;
  49. #if DEBUG
  50.     debugprint("main start !\n");
  51.     debugprint("MMI_initHyper = %d!\n", MMI_initHyper);
  52. #endif
  53.  
  54.  
  55.     /*    ダイアログの移動範囲を設定するために、 MMI_Open関数    */
  56.     /*    の引数を使用します。通常の移動範囲ならば引数の指定    */
  57.     /*    は、 NULL で大丈夫です。                                */
  58.  
  59.     ctrl.page0 = SCREEN16 ;            /*    16色2画面に設定する        */
  60.     ctrl.page1 = SCREENUNUSED ;
  61.     ctrl.writePage = 0 ;            /*    page0 を書き込みページ    */
  62.     ctrl.displayPage = 1 ;            /*    ペ-ジ0画面表示        */
  63.     ctrl.priority = 0 ;
  64.     ctrl.mode = SCREENAVAILABLE;    /*    16色モードに設定する    */
  65.     ctrl.width = SCREENEXPAND;        /*    画面モード3 では512        */
  66.     ctrl.size = 0 ;                    /*    メモリの初期化は         */
  67.     ctrl.ptr = NULL ;                /*    GUIライブラリに任せる        */
  68.     ctrl.asize = 0 ;                /*    アプリケーションで必要とする    */
  69.     ctrl.aptr = NULL ;                /*    初期メモリは無し        */
  70.     ctrl.move.lupx = -16384 ;
  71.     ctrl.move.lupy = 22 ;    
  72.     ctrl.move.rdwx = 16383 ;
  73.     ctrl.move.rdwy = 16383 ;
  74.     ctrl.white = 15 ;                /*    白色は   15 番            */
  75.     ctrl.black = 8 ;                /*    黒色は    8 番            */
  76.     ctrl.gray = 7 ;                    /*    灰色は    7 番            */
  77.     ctrl.xor = 7 ;                    /*    反転色は 14 番            */
  78.  
  79.     /*    初期化処理    */
  80.     if (MMI_Open( &ctrl ) == NOERR)
  81.     {
  82. #if DEBUG
  83.     debugprint("APL_init start !\n");
  84. #endif
  85.         /*    初期化に成功すればメインループに入る.    */
  86.         if (APL_init() == NOERR){
  87.             /*    ファイルダイアログ関係の初期化処理        */
  88.             /*    カレントディレクトリを保存する        */
  89. /*
  90.             FDG_SaveCurDir() ;
  91.  */
  92.             /*    ファイルダイアログの初期化            */
  93.             FDG_InitFileDlg() ;
  94.  
  95.             MMI_ExecSystem() ;
  96.  
  97.             /*    ファイルダイアログ関係の終了処理        */
  98.             /*    メモリ開放            */
  99.             FDG_FreeFileDlg() ;
  100.             /*    カレントディレクトリを復帰する        */
  101. /*
  102.             FDG_RecovCurDir() ;
  103.  */
  104.         }
  105.     }
  106.  
  107.     /*    終了処理    */
  108.     MMI_Close() ;
  109.  
  110. }
  111.  
  112. int APL_init()
  113. {
  114.     extern MMIINIT    initDataMIABOU ;
  115.     extern MMIINIT    initDataMIHANDY ;
  116.     extern MMIINIT    initDataMITITLE ;
  117.     extern MMIINIT    initDataMIAUTO ;
  118.     extern MMIINIT    initDataMIWARN ;
  119.     extern MMIINIT    initDataMICOMMNT ;
  120.     extern MMIINIT    initDataMIPRINT ;
  121.     extern MMIINIT    initDataMILINE ;
  122.     extern MMIINIT    initDataMIFSAVE ;
  123.     extern MMIINIT    initDataMISSAVE ;
  124.     extern MMIINIT    initDataMIJUDGE ;
  125.     extern MMIINIT    initDataMIBAN ;
  126.     extern MMIINIT    initDataMINOTE ;
  127.     extern MMIINIT    initDataMIMENU ;
  128.     extern MMIINIT    initDataMICHECK ;
  129.  
  130.     /*    サイドワークの登録に使う部品の外部宣言    */
  131.     extern int mitemBarId[] ;
  132.  
  133.     register int    ret ;
  134.     BAN_TYPE ban_type;
  135.  
  136.     /*    EGB ワークアドレスの取得.    */
  137.     guiEgbPtr = MMI_GetEgbPtr() ;
  138.  
  139. #if DEBUG
  140.     debugprint("MMI_initHyper()\n");
  141.     debugprint("MMI_initHyper = %d!\n", MMI_initHyper);
  142. #endif
  143.     /*    ハイパ型部品の初期化            */
  144.     if ((ret = MMI_initHyper()) < 0)
  145.         return ret ;
  146. #if DEBUG
  147.     debugprint("MMI_initDialogL40()\n");
  148. #endif
  149.     /*    ダイアログ型部品の初期化        */
  150.     if ((ret = MMI_initDialogL40()) < 0)
  151.         return ret ;
  152. #if DEBUG
  153.     debugprint("MMI_initAlertL40() start !\n");
  154. #endif
  155.     /*    アラート型部品の初期化            */
  156.     if ((ret = MMI_initAlertL40()) < 0)
  157.         return ret ;
  158.     /*    ウインドウ型部品の初期化        */
  159.     if ((ret = MMI_initWindowL40()) < 0)
  160.         return ret ;
  161.     /*    メッセージ型部品の初期化        */
  162.     if ((ret = MMI_initMessageL40()) < 0)
  163.         return ret ;
  164.     /*    メニュー型部品の初期化            */
  165.     if ((ret = MMI_initMenuL40()) < 0)
  166.         return ret ;
  167.     /*    ボタン型部品の初期化            */
  168.     if ((ret = MMI_initButtonL40()) < 0)
  169.         return ret ;
  170. #if DEBUG
  171.     debugprint("MMI_initDrawButtonL40() start !\n");
  172. #endif
  173.     /*    ドロウボタン型部品の初期化        */
  174.     if ((ret = MMI_initDrawButtonL40()) < 0)
  175.         return ret ;
  176.     /*    アイコンボタン型部品の初期化    */
  177.     if ((ret = MMI_initIconL40()) < 0)
  178.         return ret ;
  179.     /*    トグルアイコン型部品の初期化    */
  180.     if ((ret = MMI_initToggleIconL40()) < 0)
  181.         return ret ;
  182.     /*    メニューアイテム型部品の初期化    */
  183.     if ((ret = MMI_initMenuItemL40()) < 0)
  184.         return ret ;
  185.     /*    スクロールバー型部品の初期化        */
  186.     if ((ret = MMI_initScrollBarL40()) < 0)
  187.         return ret ;
  188.     /*    テキスト型部品の初期化            */
  189.     if ((ret = MMI_initTextL40()) < 0)
  190.         return ret ;
  191.     /*    数値入力型部品の初期化            */
  192.     if ((ret = MMI_initNumBoxL40()) < 0)
  193.         return ret ;
  194.     /*    ファイルダイアログを使うときはリストメニューの初期化も必要    */
  195.     /*    リストメニュー型部品の初期化            */
  196.     if ((ret = MMI_initListMenuL40()) < 0)
  197.         return ret ;
  198.  
  199. #if DEBUG
  200.     debugprint("MMI_SetUpVisualEffect()\n");
  201. #endif
  202.  
  203.     /*    データの登録        */
  204.     if ((ret = MMI_Init(&initDataMIABOU)) < 0)
  205.         return ret ;
  206.  
  207.     if ((ret = MMI_Init(&initDataMIHANDY)) < 0)
  208.         return ret ;
  209.  
  210.     if ((ret = MMI_Init(&initDataMITITLE)) < 0)
  211.         return ret ;
  212.  
  213.     if ((ret = MMI_Init(&initDataMIAUTO)) < 0)
  214.         return ret ;
  215.  
  216.     if ((ret = MMI_Init(&initDataMIWARN)) < 0)
  217.         return ret ;
  218.  
  219.     if ((ret = MMI_Init(&initDataMICOMMNT)) < 0)
  220.         return ret ;
  221.  
  222.     if ((ret = MMI_Init(&initDataMIPRINT)) < 0)
  223.         return ret ;
  224.  
  225.     if ((ret = MMI_Init(&initDataMILINE)) < 0)
  226.         return ret ;
  227.  
  228.     if ((ret = MMI_Init(&initDataMIFSAVE)) < 0)
  229.         return ret ;
  230.  
  231.     if ((ret = MMI_Init(&initDataMISSAVE)) < 0)
  232.         return ret ;
  233.  
  234.     if ((ret = MMI_Init(&initDataMIJUDGE)) < 0)
  235.         return ret ;
  236.  
  237.     if ((ret = MMI_Init(&initDataMIBAN)) < 0)
  238.         return ret ;
  239.  
  240.     if ((ret = MMI_Init(&initDataMINOTE)) < 0)
  241.         return ret ;
  242.  
  243.     if ((ret = MMI_Init(&initDataMIMENU)) < 0)
  244.         return ret ;
  245.  
  246.     if ((ret = MMI_Init(&initDataMICHECK)) < 0)
  247.         return ret ;
  248.  
  249.     MMI_SendMessage(MMI_GetBaseObj(), MM_SETEXEC, 1, userFunc);
  250.     
  251.     MMI_CallMessage(MMI_GetApliId(), GM_TITLE, (int)"囲碁棋譜記録プログラム", 0);
  252.  
  253.     /*    背景を表示する                            */
  254.     MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;
  255.  
  256.     /*    SIDEWORKメニューを登録する                */
  257.     MMI_SetUpPrgMenu( mitemBarId[0] , -1 ) ;
  258.     MMI_SetUpSDKMenu( mitemBarId[0] , -1 ) ;
  259.  
  260.     title_init();
  261.     /*    背景データの初期化                        */
  262.     ban_type.type = NORMAL;
  263.     ban_type.size = 19;
  264.     ban_type.size2 = 0;
  265.     title_bantype_set( ban_type); /* この処理はban_initでやるべきか? */
  266.  
  267.     kifu_init();
  268.     henkan_init();
  269.  
  270.     igo_init();
  271.  
  272.     return NOERR ;
  273. }
  274.  
  275.